canon: Sandbox Hygiene — per-flight owned scratch, no fixed shared temp names (DRAFT)#292
canon: Sandbox Hygiene — per-flight owned scratch, no fixed shared temp names (DRAFT)#292git-repo-auth[bot] wants to merge 2 commits into
Conversation
…mp names Draft tier-1 constraint. Flights must mint a uniquely-named, self-owned scratch dir (mktemp -d, 0700), do all temp/clone/PR-body work inside it, and tear it down on exit. Prohibits fixed shared temp names, chiefly /tmp/pr_body.md. Authored from residue observed at boot this session (stale /tmp/pr_body.md owned by nobody:nogroup). WHAT/WHY/ENFORCEMENT/ SCOPE/VERIFICATION anatomy; reconciled with policy-precedes-build ordering. Includes CHANGELOG 0.42.0 bump + release note per governance-change-discipline.
Canon Quality — Homepage Surfacing ✅49 essay(s) scanned. Soft report — never blocks; the hard field gate is the Frontmatter Schema job. All published essays resolve to the homepage feed. Report: |
Canon Quality — Frontmatter Schema ✅All 49 file(s) in Validator: |
Canon Quality — P0010 Retrieval-Readiness
|
Canon Quality —
|
Voice-only pass on a universal constraint + its release note and changelog entry. Role term -> 'operator' (incl. the 'captain-side' action split -> 'operator-side'); draft-posture 'opened for captain review' -> 'opened for review'. CHANGELOG change is limited to this PR's new entry; pre-existing history is untouched. No rulings, thresholds, enforcement, scope, or meaning changed.
|
Closing — relocated to Operator ruling (2026-07-17): the New location:
Frontmatter corrected in the relocated copy: Nothing was merged. Closing this draft. |
Draft canon PR — Sandbox Hygiene (policy precedes build)
Status: DRAFT for captain review. Nothing here merges without your read of the exact text.
What this is
A tier-1 canon constraint — Sandbox Hygiene: Per-Flight Owned Scratch, No Fixed Shared Temp Names — drafted before the implementing fix, per the policy-precedes-build ordering. The
agent-role-servicehelper PR cites this constraint by URI.Why now (observed, not assumed)
At boot this session the sandbox contained a stale
/tmp/pr_body.md— 6347 bytes, owned bynobody:nogroup, dated the prior evening. That is the exact residue that produced wrong-content PRs and git-lock failures across earlier flights this session. This constraint closes it.Anatomy (WHAT / WHY / ENFORCEMENT / SCOPE / VERIFICATION)
mktemp -d,0700); no fixed shared temp names (chiefly/tmp/pr_body.md); PR bodies / clones / diffs live under scratch; mandatory teardown on exit.repo-truth,D0004).df/stale-file check;EXIT-trap teardown; a sourced helper; a practice/lint check. Mechanical, not memory.agent-role-service; the per-flightTMPDIRisolation is a Cowork launch-config setting (captain-side, cannot be PR'd); the per-run cloud sandbox (task.js, PR feat: AI voice cliché constraint + ghost writer test (checklist item 8) #80) is explicitly out of scope.0700, ownership, teardown, stale-file detection) + residue check + lint.Files
canon/constraints/sandbox-hygiene-per-flight-scratch.md(new, tier-1)canon/CHANGELOG.md— 0.42.0 bumpdocs/oddkit/release-notes/2026-07-17-sandbox-hygiene-per-flight-scratch.md(new)Honesty note
No committed canon file named
policy-precedes-buildorenforceable-policy-anatomywas found viaoddkit_searchor in the working tree. This realizes the named ordering and anatomy as specified and reconciles with committed governance (governance-change-discipline,definition-of-done,convention-requires-an-enforcer,repo-truth/D0004). If those canon files exist elsewhere, repointderives_frombefore merge.Companion
Implementation PR:
klappy/agent-role-service—scripts/flight-scratch.sh+ test (opened separately, cites this constraint).Assigned to @klappy for review. Draft — not for merge/deploy.